/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */

package com.sys.midware.config.model;

import java.util.Map;

import com.sys.midware.assist.utils.Assert;

/**
 * <b>ClassName:</b> BConfigVO.java <br/>
 * <b>Description:</b> 配置文件实体类 <br/>
 * <b>Date:</b> 2015年10月16日 下午3:55:42<br/>
 * 
 * @author mobing
 * @version
 */
public class BNode {
    /**
     * 节点名称
     */
    private String nodeName;
    /**
     * 节点主从类型
     */
    private String nodeType;
    /**
     * 节点配置类型，是属于哪个配置的，例如mongo，Hbase等
     */
    private String nodeFor;
    
    /**
     * 是否默认节点
     */
    private String nodeDefault;
    
    /**
     * nodeDefault
     *
     * @return  the nodeDefault
     */
    
    public String getNodeDefault() {
        return nodeDefault;
    }
    /**
     * @param nodeDefault the nodeDefault to set
     */
    public void setNodeDefault(String nodeDefault) {
        this.nodeDefault = nodeDefault;
    }
    public String getNodeFor() {
        return nodeFor;
    }
    public void setNodeFor(String nodeFor) {
        this.nodeFor = nodeFor;
    }
    private Map<String, Object> nodeParams;

    
    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public Object getNodeParam(String key) {
        if(key ==null){
            Assert.notNull(key, "key不能为空！");
        }
        return this.nodeParams.get(key);
    }
    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public String getNodeParamStr(String key) {
        Object obj = getNodeParam(key);
        if(obj!=null ){
            return (String) obj;
        }
        return null;
    }
    
    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public Boolean getNodeParamBoolean(String key) {
        return Boolean.valueOf(getNodeParamStr(key));
    }
    
    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public Integer getNodeParamInteger(String key) {
        return Integer.valueOf(getNodeParamStr(key));
    }
    public String getNodeName() {
        return nodeName;
    }

    public void setNodeName(String nodeName) {
        this.nodeName = nodeName;
    }

    public String getNodeType() {
        return nodeType;
    }

    public void setNodeType(String nodeType) {
        this.nodeType = nodeType;
    }

    public Map<String, Object> getNodeParams() {
        return nodeParams;
    }

    public void setNodeParams(Map<String, Object> nodeParams) {
        this.nodeParams = nodeParams;
    }
    @Override
    public String toString() {
        return  "BNode [nodeName=" + nodeName + ", nodeType=" + nodeType + 
                ", nodeParams=" + nodeParams + "]";
    }
    
    

}
